import java.util.Stack;

public class MinStack {
        public Stack<Integer> stack;
        public  Stack<Integer> minStack;
        public MinStack() {
                stack = new Stack<>();
                minStack = new Stack<>();
        }

        public void push(int val) {
                stack.push(val);
                if(minStack.empty()) {
                        minStack.push(val);
                }else {
                        int peekVal = minStack.peek();
                        if(val <= peekVal) {
                                minStack.push(val);
                        }
                }
        }
        public void pop() {
                if(stack.empty()) {
                        return;
                }
                int popVal = stack.pop();
                if(popVal == minStack.peek()) {
                        minStack.pop();
                }
        }

        public int top() {
                if(stack.empty()) {
                        return -1;
                }
                return stack.peek();
        }

        public int getMin() {
                if(minStack.empty()) {
                        return -1;
                }
                return minStack.peek();
        }
}
